﻿
Namespace SFDL.FTP
    Public Class FTP

        Public Enum TransferMode As Integer
            ''' <summary>
            ''' Active transfer mode.  In this mode the FTP server initiates a connection to the client when transfering data.
            ''' </summary>
            ''' <remarks>This transfer mode may not work when the FTP client is behind a firewall and is accessing a remote FTP server.</remarks>
            Active
            ''' <summary>
            ''' Passive transfer mode.  In this mode the FTP client initiates a connection to the server when transfering data.
            ''' </summary>
            ''' <remarks>
            ''' This transfer mode is "firewall friendly" and generally allows an FTP client behind a firewall to access a remote FTP server.
            ''' This mode is recommended for most data transfers.
            ''' </remarks>
            Passive
        End Enum

        Public Enum FtpSecurityProtocol As Integer
            ''' <summary>
            ''' No security protocol specified.
            ''' </summary>
            None
            ''' <summary>
            ''' Specifies Transport Layer Security (TLS) version 1.0 is required to secure communciations.  The TLS protocol is defined in IETF RFC 2246 and supercedes the SSL 3.0 protocol.
            ''' </summary>
            ''' <remarks>
            ''' The AUTH TLS command is sent to the FTP server to secure the connection.  TLS protocol is the latest version of the SSL protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' </remarks>
            Tls1Explicit
            ''' <summary>
            ''' Specifies Transport Layer Security (TLS) version 1.0. or Secure Socket Layer (SSL) version 3.0 is acceptable to secure communications in explicit mode.
            ''' </summary>
            ''' <remarks>
            ''' The AUTH SSL command is sent to the FTP server to secure the connection but the security protocol is negotiated between the server and client.  
            ''' TLS protocol is the latest version of the SSL 3.0 protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' </remarks>
            Tls1OrSsl3Explicit
            ''' <summary>
            ''' Specifies Secure Socket Layer (SSL) version 3.0 is required to secure communications in explicit mode.  SSL 3.0 has been superseded by the TLS protocol
            ''' and is provided for backward compatibility only
            ''' </summary>
            ''' <remarks>
            ''' The AUTH SSL command is sent to the FTP server to secure the connection.  TLS protocol is the latest version of the SSL 3.0 protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' Some FTP server do not implement TLS or understand the command AUTH TLS.  In those situations you should specify the security
            ''' protocol Ssl3, otherwise specify Tls1.
            ''' </remarks>
            Ssl3Explicit
            ''' <summary>
            ''' Specifies Secure Socket Layer (SSL) version 2.0 is required to secure communications in explicit mode.  SSL 2.0 has been superseded by the TLS protocol
            ''' and is provided for backward compatibility only.  SSL 2.0 has several weaknesses and should only be used with legacy FTP server that require it.
            ''' </summary>
            ''' <remarks>
            ''' The AUTH SSL command is sent to the FTP server to secure the connection.  TLS protocol is the latest version of the SSL 3.0 protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' Some FTP server do not implement TLS or understand the command AUTH TLS.  In those situations you should specify the security
            ''' protocol Ssl3, otherwise specify Tls1.
            ''' </remarks>
            Ssl2Explicit
            ''' <summary>
            ''' Specifies Transport Layer Security (TLS) version 1.0 is required to secure communciations in explicit mode.  The TLS protocol is defined in IETF RFC 2246 and supercedes the SSL 3.0 protocol.
            ''' </summary>
            ''' <remarks>
            ''' The AUTH TLS command is sent to the FTP server to secure the connection.  TLS protocol is the latest version of the SSL protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' </remarks>
            Tls1Implicit
            ''' <summary>
            ''' Specifies Transport Layer Security (TLS) version 1.0. or Secure Socket Layer (SSL) version 3.0 is acceptable to secure communications in implicit mode.
            ''' </summary>
            ''' <remarks>
            ''' The AUTH SSL command is sent to the FTP server to secure the connection but the security protocol is negotiated between the server and client.  
            ''' TLS protocol is the latest version of the SSL 3.0 protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' </remarks>
            Tls1OrSsl3Implicit
            ''' <summary>
            ''' Specifies Secure Socket Layer (SSL) version 3.0 is required to secure communications in implicit mode.  SSL 3.0 has been superseded by the TLS protocol
            ''' and is provided for backward compatibility only
            ''' </summary>
            ''' <remarks>
            ''' The AUTH SSL command is sent to the FTP server to secure the connection.  TLS protocol is the latest version of the SSL 3.0 protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' Some FTP server do not implement TLS or understand the command AUTH TLS.  In those situations you should specify the security
            ''' protocol Ssl3, otherwise specify Tls1.
            ''' </remarks>
            Ssl3Implicit
            ''' <summary>
            ''' Specifies Secure Socket Layer (SSL) version 2.0 is required to secure communications in implicit mode.  SSL 2.0 has been superseded by the TLS protocol
            ''' and is provided for backward compatibility only.  SSL 2.0 has several weaknesses and should only be used with legacy FTP server that require it.
            ''' </summary>
            ''' <remarks>
            ''' The AUTH SSL command is sent to the FTP server to secure the connection.  TLS protocol is the latest version of the SSL 3.0 protcol and is the security protocol that should be used whenever possible.
            ''' There are slight differences between SSL version 3.0 and TLS version 1.0, but the protocol remains substantially the same.
            ''' Some FTP server do not implement TLS or understand the command AUTH TLS.  In those situations you should specify the security
            ''' protocol Ssl3, otherwise specify Tls1.
            ''' </remarks>
            Ssl2Implicit
        End Enum


        Public Enum TransferType As Integer
            ''' <summary>
            ''' No transfer type.
            ''' </summary>
            None
            ''' <summary>
            ''' Transfer mode of type 'A' (ascii).
            ''' </summary>
            Ascii
            ''' <summary>
            ''' Transfer mode of type 'I' (image or binary)
            ''' </summary>
            Binary
        End Enum

    End Class

End Namespace
